// Aufgabe 11: Hexadezimal
#include <iostream>

using namespace std;


unsigned int potenz(int zahl, int exp) {
	unsigned int ergebnis = 1;

	for (int i = 1; i <= exp; i++) {	// wenn exp=0 wird die schleife net ausgefuehrt weil exp < i
		ergebnis *= zahl;				// dann wird ergebnis = 1 zurueckgegeben
	}
	return ergebnis;
}
int main()
{
	char eingabe [] = {0, 0, 0, 0, 0, 0, 0, 0}; //8-Zeichen lange Hexadezimal Zahl
	int max = sizeof(eingabe);
	unsigned int summe = 0;						// 4294967295 = max

	system("cls");

	for (int i = 0; i < max; i++) {
		cout << "Eingabe[" << i+1 << "] > ";
		cin >> eingabe[i];
	}

	for (int i = 0, j = max-1; i < max && j >= 0; i++, j--) {
		switch(eingabe[i]) {
			case '0'	: summe += 0*potenz(16,j);	break;
			case '1'	: summe += 1*potenz(16,j);	break;
			case '2'	: summe += 2*potenz(16,j);	break;
			case '3'	: summe += 3*potenz(16,j);	break;
			case '4'	: summe += 4*potenz(16,j);	break;
			case '5'	: summe += 5*potenz(16,j);	break;
			case '6'	: summe += 6*potenz(16,j);	break;
			case '7'	: summe += 7*potenz(16,j);	break;
			case '8'	: summe += 8*potenz(16,j);	break;
			case '9'	: summe += 9*potenz(16,j);	break;
			case 'a'	: summe += 10*potenz(16,j); break;
			case 'b'	: summe += 11*potenz(16,j); break;
			case 'c'	: summe += 12*potenz(16,j); break;
			case 'd'	: summe += 13*potenz(16,j); break;
			case 'e'	: summe += 14*potenz(16,j); break;
			case 'f'	: summe += 15*potenz(16,j); break;
			default		: cout << "foo"; break;
		}
		//cout << "durchlauf: " << i << " summe: " << summe << endl;
	}

	cout << "Ausgabe: " << "hex: " << hex << summe << " dec: " << dec << summe << endl;
	
	return 0;
}

